約 4,398,768 件
https://w.atwiki.jp/juria/pages/51.html
xyzzy + Calmemo.l MyWiki より転記・修正[2007-01-28] [2006-01-04] Wiki 等の原稿は xyzzy + CalMemo で書いています。 日付で(データファイル名も)管理できるので、投稿した日付と整合できるし、 ちょっとしたメモに至るまで、キーワード(カテゴリー)で分類・検索・閲覧、 編集・削除がキーボードのみで行えます。(もちろんマウスでも。) Wiki やら Blog みたいなことをローカルでできる、とも言えなくもない。 てか、お手軽 Hown(Hitori Otegaru WIKI Modoki)なんでしょうか。 CalMemo フレーム以外のフレーム(通常のテキスト編集や 拡張モード等)から メモを編集することもできます。 カテゴリー(ChangeLog 形式で記述)で分類 Grep,GGrep(要 ggrep.l ),絞込検索 検索インデックス作成 メモや検索結果の一覧表示、サマリ表示 カレンダー上でその日のメモをポップアップ 他の日のメモやファイルにリンク、関連付け実行も可 簡易ToDo NetInstaller からインストール・自動設定が出来ますし、丁寧な readme.txt が 付いていますが、手動でインストール・設定する手順をメモ。 ▼インストール 1.calmemo フォルダを ~/site-lisp にコピー 2.データフォルダを作成(ex. ~/calmemo) 3..xyzzy か siteinit.l に記述 (require "calmemo/calmemo"); xyzzy 起動時にロード 4.00sample.calmemo を .calmemo にリネーム、~/ にコピー・編集 5.xyzzyを再起動、siteinit.l に記述した場合は再ダンプ 6.M-x calmemo で初回起動時にデータフォルダ内に、 chalow,log,mark,note,todo,trash 各フォルダが作成される メモはlogフォルダの中に、年ごと月ごと日付ごとに作成される データフォルダ/log/2006/01/20060101.txt(設定した拡張子、デフォルトは .clm) ▼pFarm 機能(データフォルダの切替) Wiki の原稿など毎日のメモを標準以外のフォルダで管理する 1.データ用フォルダを作成(ex. /DiaryData) 2.~/.calmemoに設定を記述 (in-package "calmemo") ;; *pfarm-list* を設定 (setf *pfarm-list* (("Default") ("Diary" "/DiaryData/" ".txt") ;名前、データフォルダ、拡張子 )) ;; 起動時に開く pFarm を指定 (setf *pfarm-default-name* "Diary") ;名前 3.pFarm 毎の設定 データフォルダに config.l を作成、00sample.calmemoから転記・編集 .calmemo の設定に優先する (in-package "calmemo") ;; よく使うカテゴリ名のリストを作成 (setf *category-list* ("bookmark" "Audio" "Video" "BBS" "memo")) ;; C-j でカテゴリ名のリストをポップアップ、選択して入力 (setf *insert-item-with-popup-category-list* t) ;; サイドバーに表示する項目の表示順,項目の展開状態,項目を表示/非表示 (defvar *sidebar-item-list* ((pfarm . t) (folder . t) (category . t) (yearmonth . t))) xyzzy を再起動、M-x calmemo で初回起動時に各フォルダが作成される。 CalMemo 導入以前より CalMemo と同じフォルダ構成・年月日名で管理していた 日記テキストは、log フォルダにフォルダごと移動するだけで認識された。 ▼検索インデックスの作成 検索キーワードの含まれるメモを結合して表示します。 1.検索キーワードの登録(config.l または .calmemo に) ("キーワード名" . "検索文字列") (setf *search-default-keyword-alist* ( ("あふ" . "\\(afx\\|あふ\\)") ;and検索 ("Craft" . "CraftLaunch") ("fenrir" . "fenrir") ;;カテゴリ 行頭にマッチさせる ;("URL" . "^\t?\\* \\(memo\\|bookmark\\) ") )) 2.作成した検索インデックスをファイルに保存して再利用 次回 CalMemo 起動・インデックス検索初回実行時にインデックスが作成・ 記憶され、メモの保存時にも更新される。(データフォルダに .cache.txt が作成され、登録した検索キーワードとインデックスがメモの日付 で記録される。) config.l または .calmemo に (setf *search-index-use-history* t) 3.インデックス検索実行方法 / と入力後、ミニバッファに登録した検索キーワードを入力、実行 ▼リンクの書式 書式の場合は行末(改行有り)であること。 日付リンク :[2004-01-01] ファイルリンク : D /hoge/README.TXT : ~/.calmemo Note、ファイルリンク : ./2007/01/file.cml xyzzy のメジャーモードで開く :[[E /WEB/index.html]] 関連付け実行 :[[E /MP3/foo.mp3]] プログラム実行 :[[C /bar.exe]] メジャーモードで開くか、システムの関連付けで開くか、拡張子のリストで 明示的に指定する メジャーモード (setf *link-find-file-type-list* ("csv" "ini")) 関連付け (setf *link-shell-execute-type-list* ("html" "htm")) -
https://w.atwiki.jp/juria/pages/84.html
xyzzy + estraier.l Hyper Estraier Mode on xyzzyHyper Estraier estraier.l v0.0.1Lisp の修正 Hyper Estraier Mode on xyzzy [2008-02-06] MyWiki より転記・修正 [2006-02-08] デスクトップ検索を xyzzy から Hyper Estraier インデックスを使った全文検索システム Windows版バイナリパッケージ(hyperestraier-1.x.x-win32.zip)を展開後、その フォルダにpathを通す。(HE-grep 導入時に設定済みなら、そのままで OK。) estraier.l v0.0.1 公開終了 ▼導入 1. estraier.l を ~/site-lisp/ にコピー、必要ならバイトコンパイル 2.~/.xyzzy か ~/site-lisp/sitlint.l に (require "estraier") * estraier-help.html(Hyper Estraier Mode マニュアル)には site-lispフォルダに estraier.l を置き、(require "estraier/estraier") となっていますが、それでは”ファイルがありません”と怒られます。 (require "estraier/estraier") にするなら estraier フォルダごと ~/site-lisp/ に置きます。 3.xyzzy を再起動 メニューバーに「Estraier」ボタンと ~/xyzzy/.estraier-mode/ フォルダが 作成される。 ▼準備 1.インデックスを保存する場所を決める(デフォルト以外) M-x est est-add-casket-dir Enter Folder E /HTML/casket Enter Title WEBソース Enter 「indexフォルダとして登録する?」と聞かれるので、「はい」 2.インデックス作成 [メニュー]→[index作成、追加、削除]をクリック、または M-x est est-add-index ・表示された *Estraier-Add-Index* バッファに、インデックスを作成したい フォルダを D D、 g でインデックス化開始、 ・ダイアログでファイルタイプ、文字コードなどを設定、確認後 OK ・終了したら q でインデックスモードを抜ける。 ※ HE-grep 導入済みの場合は、1の作業のみで検索・最適化の対象として 認識されるが、index 削除の対象にはならないので注意。 3.検索 M-x est estsearch 表示されたダイアログで index を選択、検索語を入力 AND検索:空白区切り NOT検索:! OR検索:| 区切り 検索語に空白を含む場合は "" "" で囲む 検索結果のファイルパス上で Enter で、関連付け実行 4.ファイルの更新や追加があったときに index に差分を書き直す [メニュー]→[フォルダ情報の更新] または M-x est est-sync 対象フォルダパスの上で s 5.ファイルを削除した時の index への反映 [メニュー]→[削除したファイルの反映] または M-x est est-purge 6.インデックスファイルの最適化 [メニュー]→[dbファイルの最適化] または M-x est est-optimize 7.indexの削除 [メニュー]→[index作成、追加、削除]をクリック、または M-x est est-add-index 対象フォルダパスの上で d Lisp の修正 ■検索対象パスに空白が含まれると怒られる estraier.l の 283行目、casketdir " " を書き換える (xyzzyの使い方が分からぬやし 励ましあえ その8 127)(未検証) "\"" casketdir "\"" " " * \は、バックスラッシュです。 ■日本語の検索ができない 文字コードの選択肢を増やす(estcmd の オプションを xdoc2txt の出力に合わせる) 202行目 (encoding-data-list ("自動判別" "Shift_JIS" "ISO-2022-JP(メール)" "UTF-8" "EUC-JP" "CP932")) 261行目 (cmdlist ("estcmd search -sf -ic CP932 -vh -max -1 " "estcmd search -ic CP932 -vh -max -1 ")) 307行目 (encoding-data-list ("自動判別" "Shift_JIS" "ISO-2022-JP(メール)" "UTF-8" "EUC-JP" "CP932")) 397,398行目 "-ic EUC-JP " "-ic CP932 -pc CP932")) PDFやDOCのインデックス化時に [CP932] を指定します。 とりあえず、これで行けてます。 -
https://w.atwiki.jp/falfal21/pages/42.html
更新 2011-01-06 11 25 40 (Thu) お品書き 倉庫 ふぁいらーっぽいなにか マイナーモード詰め合せ ふぁいらーっぽいなにか Download たぶん最新版 こんな感じ ファイルを管理するものです xyzzy上で動きます 基本的なファイル操作が出来るはずです ファイルの検索・圧縮・解凍もたぶん対応 マイナーモード詰め合せ Download たぶん最新版 自分にとって便利(だと思われる)な機能をいろいろと まだ完全に作りかけ そもそもマイナーモードである必要があるのかも謎 機能1:マウスジェスチャー 機能2:viっぽいキーバインド
https://w.atwiki.jp/syohaku/pages/9.html
[Font] Ascii=19,"FixedSys",128 Japanese=19,"FixedSys",128 Latin=19,"Courier New",0 Cyrillic=19,"Courier New",0 Greek=19,"Courier New",0 GB2312=20,"Courier",0 BIG5=20,"Courier",0 KSC5601=19,"GulimChe",0 Georgian=19,"BatangChe",0 lineSpacing=0 backslash=0 recommendSize=0 sizePixel=0 [Colors] textColor=#ffffff backColor=#2f2f2f ctlColor=#ca0000 selectionTextColor=#fc8d0d8 selectionBackColor=#e808000 kwdColor1=#ffff00 kwdColor2=#2020ff kwdColor3=#ff stringColor=#60ff60 commentColor=#80ff80 tagColor=#ffff80 cursorColor=#800080 caretColor=#ffffff imeCaretColor=#80 linenum=#ffffff reverse=#ffffff unselectedModeLineFg=#13000000 unselectedModeLineBg=#109098a8 modeLineFg=#15c8d0d8 modeLineBg=#13000000 fg1=#ff bg1=#ff fg2=#ff00 bg2=#ff00 fg3=#ffff bg3=#ffff fg4=#ffff bg4=#ff0000 fg5=#ff00ff bg5=#ff00ff fg6=#ffff00 bg6=#ffff00 fg7=#ffffff bg7=#cdcdcd fg8=#0 bg8=#0 fg9=#80ff00 bg9=#80 fg10=#ea00 bg10=#8000 fg11=#ff6a6a bg11=#8080 fg12=#ffff bg12=#800000 fg13=#800080 bg13=#800080 fg14=#808000 bg14=#808000 fg15=#808080 bg15=#808080 buftabSelFg=#13000000 buftabSelBg=#109098a8 buftabDispFg=#13000000 buftabDispBg=#109098a8 buftabFg=#13000000 buftabBg=#109098a8 tabSelFg=#13000000 tabSelBg=#109098a8 tabFg=#13000000 tabBg=#109098a8 custColor0=#ffffff custColor1=#ffffff custColor2=#ffffff custColor3=#ffffff custColor4=#ffffff custColor5=#ffffff custColor6=#ffffff custColor7=#ffffff custColor8=#ffffff custColor9=#ffffff custColor10=#ffffff custColor11=#ffffff custColor12=#ffffff custColor13=#ffffff custColor14=#ffffff custColor15=#ffffff [Misc] 1280x1024=(22,71)-(1274,807),1 saveWindowSize=1 saveWindowPosition=1 restoreWindowSize=1 restoreWindowPosition=1 windowFlags=#567 fnkeyLabels=0 foldMode=0 foldLinenumMode=1 [BufferSelector] column=117,65,100,320 1280x1024=(166,390)-(724,683),1 [Filer] columnLeft=121,65,116,44 columnRight=121,65,116,44 1280x1024=(518,486)-(1265,944),1 sortRight=0 sortLeft=0 column=121,65,116,44 s1280x1024=(284,162)-(688,680),1 sort=0 textColor=#9000000 backColor=#6a8b5c1 highlightTextColor=#fc8d0d8 highlightBackColor=#e808000 cursorColor=#c000c0 [init] homeDir="C /xyzzy"
https://w.atwiki.jp/do-little/pages/4.html
なりゆき 以前から単なるテキストエディタとしてxyzzyを利用していたのですが、この度"xyzzy入門"と言う書籍を片手にLispなんかも導入して『幸せになれる環境』を作ろうとしたのですが……。 どういう訳か色々入れている内に起動もままならないような状態になってしまいました。Web上で色々な情報を集めて構築した環境ですが、再構築となるとまた全部集め直さなければならず記憶もおぼろげなのでいっそのこと導入記をWikiで管理してみようかと思い開設したわけです。 インストール--Lisp
https://w.atwiki.jp/bovecrach/pages/18.html
そのうちこの辺から移動してくる予定。 http //park.geocities.jp/bovecrach/index.html 移動先にGitHubを計画していて、アカウントまでは取得した。 元サイトにあった変更履歴を移植中。。。 目次 generic-comment-toggle概要 特徴 indent-to-token+概要 特徴 ライセンスNYSL Version 0.9982 NYSL Version 0.9982 (en) (Unofficial) generic-comment-toggle generic-comment-toggle.l --- 汎用コメント アンコメント を行う 概要 バッファモード毎のコメントアウトorアンコメントを行います。 要は HIEさんのページのNOTE- 編集- 1 行コメントをトグル を改造しただけです。 HIEさん多謝! HIE no Page http //hie.s64.xrea.com/ 1 行コメントをトグル http //hie.s64.xrea.com/xyzzy/note/edit.html#toggle-one-line-comment 特徴 HIEさんのページのNOTE- 編集- 1 行コメントをトグル を改造。 どのような言語でも自動でコメント文字を割り当て、コメントアウト・アンコメントします 任意の文字列をコメント文字として利用できます 名前 indent-to-token+ indent-to-token+.l --- tokenを指定してインデント 概要 指定したtokenをセレクション範囲から探し出し、その中で最も桁が大きい位置にインデントを揃えます。 要は 「思いつくまま xyzzy」 の Masahiro Nakano さんが作成されたindent-to-tokenを改造しただけです。 Masahiro Nakanoさん多謝! 思いつくまま xyzzy http //www.jaist.ac.jp/~m-nakano 特徴 思いつくまま xyzzy の Masahiro Nakano さんが作成されたindent-to-token を改造。 正規表現の token を使用して桁位置を整列させる。 名前 ライセンス 私が作成するXyzzy用のLispは、NYSL Version 0.9982を採用しています。 NYSL Version 0.9982 A. 本ソフトウェアは Everyone sWare です。このソフトを手にした一人一人が、 ご自分の作ったものを扱うのと同じように、自由に利用することが出来ます。 A-1. フリーウェアです。作者からは使用料等を要求しません。 A-2. 有料無料や媒体の如何を問わず、自由に転載・再配布できます。 A-3. いかなる種類の 改変・他プログラムでの利用 を行っても構いません。 A-4. 変更したものや部分的に使用したものは、あなたのものになります。 公開する場合は、あなたの名前の下で行って下さい。 B. このソフトを利用することによって生じた損害等について、作者は 責任を負わないものとします。各自の責任においてご利用下さい。 C. 著作者人格権は bove-crach に帰属します。著作権は放棄します。 D. 以上の3項は、ソース・実行バイナリの双方に適用されます。 NYSL Version 0.9982 (en) (Unofficial) A. This software is "Everyone sWare". It means Anybody who has this software can use it as if you re the author. A-1. Freeware. No fee is required. A-2. You can freely redistribute this software. A-3. You can freely modify this software. And the source may be used in any software with no limitation. A-4. When you release a modified version to public, you must publish it with your name. B. The author is not responsible for any kind of damages or loss while using or misusing this software, which is distributed "AS IS". No warranty of any kind is expressed or implied. You use AT YOUR OWN RISK. C. Copyrighted to bove-crach. D. Above three clauses are applied both to source and binary form of this software.
https://w.atwiki.jp/juria/pages/83.html
xyzzy + xdoc2txt.l + Hyper Estraier + HE-grep.l Hyper Estraier で抽出したファイルに対してgrep準備xdoc2txt xdoc2txt.l Hyper Estraier HE-grep.l regrep.lHE-grep の検索結果にも regrep grep 結果のクリックでジャンプ Hyper Estraier で抽出したファイルに対してgrep [2008-02-06] MyWiki より転記・修正 [2006-02-20]更新 [2005-12-30] 準備 xdoc2txt xdoc2txt v1.27 pdf, word, excel などの各種バイナリ文書からテキストを抽出する。 cryptlib.dll Ver1.00 パスワード無しで暗号化されたPDFを検索・表示するための追加DLL 3つのファイルををパスの通った所に置く。 xdoc2txt.exe(2008-02-05 現在 ver.1.27) zlib.dll(xdoc2txt に同梱) cryptlib.dll xdoc2txt.l xdoc2txt.l v0.8 xdoc2txt を利用して pdf, word, excel などの各種バイナリ文書からテキストを 抽出、xyzzy で表示する。 grep-dialog , ggrep -dialog で 直接 grep が可能。要 encap.l 1.~/site-lisp 配下にxdoc2txt.lをコピー、必要に応じてbyte-compile 2.~/site-lisp/siteinit.l または ~/.xyzzyに アーカイブ同梱の .xyzzy.sample の 記述を転記、必要に応じてカスタマイズ(xdoc2txtのオプションはreadme.txt参照) (require "xdoc2txt") xdoc2txt.l ver.0.7 以前では、システムのTempフォルダに一時ファイルが残ります。 デフォルトでは、 "C \Documents and Settings\user\Local Settings\Temp\~xyzfnk(数字).tmp" ver.0.8 以降で削除されるようになりました。(2006-06-10 追記) Hyper Estraier http //hyperestraier.sourceforge.net/ インデックスを使った全文検索システム Windows版バイナリパッケージ(hyperestraier-1.x.x-win32.zip)を DL、 パスの通ったディレクトリに以下の8個のファイルをコピー (xdoc2txt.exe , zlib.dll は Hyper Estraierパッケージにも同梱されているが、 最新版を別個に展開してあればそれ以外の6個で OK) estcmd.exe estraier.dll estxfilt.bat libiconv-2.dll mgwz.dll pthreadGC2.dll qdbm.dll regex.dll HE-grep.l http //homepage2.nifty.com/kimagurenixyzzy/HE-grep.html Hyper Estraierで抽出したファイルやバイナリ文書から抽出したテキストに対して grep をかける。 1.~/site-lisp 配下にHE-grep.lを保存、必要に応じてバイトコンパイル 2.~/site-lisp/siteinit.l または ~/.xyzzyに 以下を記述 ;HE-grep をロード (require "HE-grep") 設定は HE-grep.l を参考に(自分の環境に合わせて) ;検索結果表示を別フレームにしない (setq *use-frame-HE-grep* nil) ;検索対象をリスト形式で指定 (setq *HE-command-list* ( ( "pdf( P)" ;ポップアップメニューに表示する名前 "E /pdf/casket" ;インデックスを保存してあるディレクトリ "estcmd search -sf -ic CP932 -vh -max -1" ;estcmd search コマンドをオプション付きで指定 "E /pdf" ;インデックス作成対象のディレクトリ ) ( "doc( D)" "C /Documents and Settings/user/My Documents/casket" "estcmd search -sf -ic CP932 -vh -max -1" "C /Documents and Settings/user/My Documents" ) ( "html( H)" "E /HTML/casket" "estcmd search -sf -ic CP932 -vh -max -1" "E /HTML" ) )) ;インデックスを作成 (setq *HE-make-index-command-list* ( ;インデックス化(gather)、存在しない文書情報の削除(purge)、 ;最適化(optimize)を実行する(PDFの例) ( "E /pdf/casket" ;インデックスを保存するディレクトリ "E /pdf" ;検索対象ディレクトリ "estcmd gather -cl -fx .pdf T@estxfilt -fz ^ -ic CP932 -pc CP932 -sd -cm" ;estcmd gather コマンドをオプション付きで指定 "estcmd purge -cl" ;estcmd purge コマンドをオプション付きで指定 ;行わない場合nil "estcmd optimize" ;estcmd optimize コマンドをオプション付きで指定 ;行わない場合nil "gather-pdf( P)" ;ポップアップメニューに表示する名前 ) ;purge と optimize を行わない場合(Office文書の例) ( "C /Documents and Settings/user/My Documents/casket" "C /Documents and Settings/user/My Documents" "estcmd gather -cl -fx .rtf,.doc,.xls,.ppt T@estxfilt -fz ^ -ic CP932 -pc CP932 -sd -cm" nil nil "gather-doc( D)" ) ;登録したディレクトリのインデックスをまとめて作成 (setq *HE-make-index-all-command-list* ( ( "E /casket" "E /DiaryData" "estcmd gather -pc CP932 -ic CP932 -fh -sd -cm" "estcmd purge" "estcmd optimize" ) )) 管理コマンド User s Guide of Hyper Estraier Version 1(Japanese) から抜粋 estcmd optimize [-onp] [-ond] db :インデックスを最適化して、不要な領域を削除 estcmd search [-ic enc] [-vu|-va|-vf|-vs|-vh|-vx|-dd] [-kn num] [-um] [-ec rn] [-gs|-gf|-ga] [-cd] [-ni] [-sf] [-hs] [-attr expr] [-ord expr] [-max num] [-sk num] [-sim id] db [phrase] :インデックスに登録された文書を検索 estcmd gather [-cl] [-no] [-fe|-ft|-fh|-fm] [-fx sufs cmd] [-fz] [-fo] [-rm sufs] [-ic enc] [-il lang] [-bc] [-pc enc] [-px name] [-apn|-acc] [-xl|-xh] [-sd] [-cm] [-cs num] [-kn num] [-um] db [file|dir] :ファイルシステムを探索して文書を登録 estcmd purge [-cl] [-no] [-fc] [-pc enc] [-attr expr] db [prefix] :インデックス内にあってファイルシステム上にない文書情報を削除 -sf:検索式を簡便形式で -vh:VIEW HUMAN 表示方法の設定 -max:最大表示件数。負数にすると無制限 -cl:上書きされた文書の領域を整理 -fx:ファイル(カンマ区切りで列挙)に関連づけた外部コマンドを指定 T@estxfilt:Hyper Estraierからxdoc2txtを呼び出し(estxfilt.bat)、 外部コマンドによる出力をプレーンテキストとして解析(T@) -fz:-fxの条件に当てはまらないファイルを無視 -fh:処理対象をHTMLとして扱う -fm:処理対象をMIME(メール)として扱う ^:エスケープシーケンス -ic;対象文書の文字コードを指定 CP932 はestxfiltの出力の文字コード -pc:ファイルのパスの文字コードを指定 -il:文字コードの判定で優先される言語を指定 -sd:ファイルの更新日時を文書の属性として追加 -cm:文書の属性の更新日時がファイルの更新日時より古い場合にのみ登録 3.使い方 M-x HE-make-index :ポップアップメニューから選択してインデックスを作成 purge(削除)・optimize(最適化)もこのメニューから。(casketディレクトリは 初回インデックス作成時に自動作成される) 初回インデックス作成後すぐに optimize しておく。 M-x HE-make-index-all :*HE-make-index-all-command-list* に登録したディレクトリのインデックスを まとめて作成。 M-x HE-grep :検索語を入力して検索(検索対象インデックスが複数ある場合は、前回の対象 インデックスからの検索になる。) C-u M-x HE-grep :検索対象インデックスをポップアップメニューから選択して検索 検索語が含まれるファイル名と行全てと、検索語が強調され表示されます。 HE-grep は AND OR検索などには未対応 AND OR 検索をしたい場合は、ggrep-dialog または Hyper Estraier Mode on xyzzy で。 ただし、Hyper Estraier Mode on xyzzy では、検索語が含まれるファイルパスと 該当する部分の抜き出し表示です(estcmd search の標準出力)。 regrep.l http //xyzzy.s53.xrea.com/wiki/index.php?Memo%2FGrep%B4%D8%CF%A2 Grep 関係バッファ又は *NAMAZU SEARCH* バッファに対し再検索 M-x regrep して検索語入力。 M-x regrep-open-file :Grep関連バッファでカーソル下のファイルを開く。 HE-grep の検索結果にも regrep regrep.l に以下を追加 70行目あたりに (string= "*HE-grep*" bufname) 130行目あたりに (string= bufname "*HE-grep*") 160行目あたりに (string= "*HE-grep*" bufname) grep 結果のクリックでジャンプ (まいくろちっぷすxyzzy部門より) http //xyzzy.s53.xrea.com/wiki/index.php?TipsDirectory *regrep*バッファの検索結果上でも、 Enter or クリックでファイルを開いて 該当個所にジャンプ&反転表示ができる。(HTMLのみ?) -
https://w.atwiki.jp/astro_dust/pages/19.html
Makefile ソースコードが複数のファイルに渡って存在する場合に、それらを一度にコンパイルし、実行ファイルを生成するシステム。 Makefileが賢いのは、ソースファイルとオブジェクトファイルファイルの時間を確認し(タイムスタンプを比較)し、更新された ソースファイルだけをコンパイルする点である。 こうする事で、コンパイル時間を節約できる。 Makefileの最も基本的な構造は TARGET DEPENDENCES (tab) COMMAND である。ここで(tab)はタブ・スペースであり、タブ・スペースがないとMakefileは機能しないので重要である。 TARGETは最終的な生成物であり、またこの動作を指定する名前のような物である。 DEPENDENCESには依存ファイル、つまり互いに依存するソースコードをここに書く。 もしTARGETがDEPENDENCESよりも古ければ、COMMANDが実行され、新しいTARGETが生成されることになる。 具体例を記すと、 foo hello.f90 world.f90 (tab) gfortran hello.f90 world.f90 -o exename などのようにする。 ここでコマンドラインで make foo と打ち込むと、hello.f90 world.f90から実行ファイルexenameが生成される。 また、単に make を打ち込んだ場合、一番先頭にあるtargetが実行される。 さて、ここからはマクロを用いてMakefileをより見やすくする。 マクロとは、いってみれば変数である。 TARGET = foo EXEFNAME = jikkou SRCS = hello.f90 world.f90 FC = gfortran $(target) $(SRCS) (tab) $(FC) $(SRCS) -o $(EXEFNAME) ここで前半が変数に値を代入し、後半は各変数を用いてMakefileの基本構造を作っている。 端末で make と打ち込むと、jikkouという名前の実行ファイルが生成される。 さて、次が重要であるが、更新されたソースコードだけをコンパイルするという部分をMakefileに 書き込む。 TARGET = foo EXEFNAME = jikkou SRCS = hello.f90 world.f90 OBJS = $(SRCS .f90=.o) FC = gfortran .SUFFIXES .f90 .f90.o (tab) $(FC) -c $ $(target) $(OBJS) (tab) $(FC) $(OBJS) -o $(EXEFNAME) ここで.f90.oを書いた部分は”*.f90ファイルから*.oを作成せよ”という指令である。 このような書き方をサフィックスルールと呼ぶ。 ただ、.f90という拡張子はMakefileにはデフォルトではサフィックスルールには従わないので、 .SUFFIXES .f90とすることで、.f90をサフィックスルールに従いますよ、と宣言しておく。 ・make clean Makefileを使用するもう一つのご利益がこのcleanである。 makefileに以下を付け加える .PHONY clean clean (tab) @rm -f $(OBJS) $(OBJS .o=.mod) $(EXEFNAME) 端末で make clean とすればコンパイルによって生じたオブジェクトファイルや実行ファイル、モジュールファイルなどが消去される。 こうすることでディレクトリがスッキリとする。 ・make tarball ソースコードなどを一纏めに圧縮しておきたい場合もmakeでできる。 自分が圧縮したいと思うファイルを事前にALLFILESなどと適当なマクロを定義して、 tarball (tab) @tar zcvf $(PROGRAM).tgz $(ALLFILES) とMakefileに書き込む。端末で make tarball とすると、ALLFILESで指定されたファイル達が圧縮され、$(PROGRAM).tgzという名前で圧縮される。 最後に、私が使用しているMakefileの例を示す。 PROGRAM = result EXEFNAME = $(PROGRAM).x SRCS = test1.f90 test2.f90 INCLUDE = test3.dat LIBS = test4.a OBJS = $(SRCS .f90=.o) FC = gfortran FCFLAGS = -O2 ALLFILES = $(SRCS) Makefile .SUFFIXES .f90 all $(PROGRAM) .f90.o (tab)$(FC) $(FCFLAGS) -c $ $(FCFLAGS) -o $@ $(PROGRAM) $(OBJS) $(INCLUDE) (tab) @echo "Linking $(PROGRAM)..." (tab) @$(FD) $(FCFLAGS) -o $(EXEFNAME) $(OBJS) $(LIBS) (tab) @echo "Done." tarball (tab) @tar zcvf $(PROGRAM).tgz $(ALLFILES) .PHONY clean clean (tab) @rm -f $(OBJS) $(OBJS .o=.mod) $(EXEFNAME) 参考資料 本稿を纏めるにあたって、以下のサイトを参考にしました。 この場を借りて、お礼申し上げます。 http //lagendra.s.kanazawa-u.ac.jp/ogurisu/manuals/make-intro/macro.html http //www.atmarkit.co.jp/ait/articles/1106/10/news115.html http //d.hatena.ne.jp/rontas/20121226/1356511831 https //www.mlab.im.dendai.ac.jp/~tobe/xp-2/gmake.html
https://w.atwiki.jp/hereitis/pages/18.html
makefile雛形 ディレクトリ構成は以下のとおりとする /home/user/workspace/hoge ├ src │ ├ test01.c │ ├ test02.c │ └ test_common.h └ Debug ├ makefile ├ conf.mk └ src gcov/lcov対応版 makefileは以下のような感じ #------------------------------------------------------------------------------- # makefile #------------------------------------------------------------------------------- # configuration file -include conf.mk # Output object files $$(HOGE_DIR)/Debug/src/%.o $$(HOGE_DIR)/src/%.c @echo Building file $ @echo Invoking GCC C Compiler $(CC) $(INCPATH) -O0 $(DBGOP) -Wall $(CFLAGS) $(COVERAGE) -c -fmessage-length=0 -MMD -MP -MF"$(@ %.o=%.d)" -MT"$(@ %.o=%.d)" -o"$@" "$ " @echo Finished building $ @echo # All Target all hoge # Tool invocations hoge $(OBJS) $(USER_OBJS) @echo Building target $@ @echo Invoking GCC C Linker $(CC) $(LIBPATH) -o"hoge" $(OBJS) $(USER_OBJS) $(LIBS) @echo Finished building target $@ @echo # Other Targets clean -$(RM) $(OBJS)$(C_DEPS)$(LIBRARIES) hoge $(DB_OBJS)$(DB_C_DEPS) $(TEST_OBJS)$(TEST_C_DEPS) -$(RM) $(HOGE_DIR)/Debug/hoge.info -$(RM) $(HOGE_DIR)/Debug/lcov_hoge_html -$(RM) $(HOGE_DIR)/Debug/*.gcov -$(RM) $(HOGE_DIR)/Debug/src/*.g* -@echo coverage @echo coverage report $(GCOV) ./src/*.gcda -o ./src $(LCOV) . -o hoge.info $(RM) ./lcov_hoge_html $(GENHTML) -o lcov_hoge_html hoge.info @echo Finished making coverage report @echo .PHONY all clean dependents .SECONDARY conf.mkは以下のような感じ #------------------------------------------------------------------------------- # conf.mk #------------------------------------------------------------------------------- # Macro definition RM = rm -rf GCOV = gcov LCOV = lcov -c -d GENHTML = genhtml HOGE_DIR= /home/user/workspace/hoge # BUILD_TYPE Setting (0 release 1 debug) ifndef BUILD_TYPE BUILD_TYPE = 1 else BUILD_TYPE = 0 endif ifeq ($(BUILD_TYPE),0) DBGOP = LIBTYPE = release CFLAGS += \ else DBGOP = -g3 LIBTYPE = debug CFLAGS += \ endif # BUILD_TARGET Setting ifndef BUILD_TARGET BUILD_TARGET = 1 else BUILD_TARGET = 0 endif ifeq ($(BUILD_TARGET),0) TARGET = target CC = gcc else TARGET = host CC = gcc endif # COVERAGE Setting ifdef COVERAGE_ENABLE COVERAGE_ENABLE = 1 else COVERAGE_ENABLE = 0 endif ifeq ($(COVERAGE_ENABLE),1) COVERAGE = -coverage else COVERAGE = endif INCPATH = \ -I"../../include" \ LIBPATH = \ -L"../../lib/$(TARGET)/$(LIBTYPE)" \ # Add inputs and outputs to the build variables OBJS += \ $(HOGE_DIR)/Debug/src/test01.o \ $(HOGE_DIR)/Debug/src/test02.o \ C_DEPS += \ $(HOGE_DIR)/Debug/src/test01.d \ $(HOGE_DIR)/Debug/src/test02.d \ #Link library LIBS = \ -lutil lpthread makefile作成時の注意点(当たり前ですね。。。) export MACRO=・・・ :多段makeなどでその他のmakefile内にも影響を及ぼす MACRO=・・・ :当該makefile内でのみ有効
https://w.atwiki.jp/toyoken/pages/20.html
■ソースと同階層のMakefile #!/bin/make TARGET = Sample01 SRCS = $(shell ls *.cpp) OBJS = $(SRCS .cpp=.o) CXX = g++ CXXFLAGS = -g -O2 -Wall LDFLAGS = -lm -lrt -L/Develop/lib -lCmnFunc INCLUDE = -I../inc -I../../CmnInc DEST = ../../../bin .cpp.o $(CXX) $(CXXFLAGS) $(INCLUDE) -c $ $(TARGET) $(OBJS) $(CXX) $(LDFLAGS) -o $(TARGET) $(OBJS) cp $(TARGET) $(DEST) clean $(RM) $(TARGET) $(OBJS) $(RM) $(DEST)/$(TARGET) ◆ライブラリのmakefile #!/bin/make TARGET = libCmnFunc.so SRCS = $(shell ls *.cpp) OBJS = $(SRCS .cpp=.o) CXX = g++ CXXFLAGS = -g -O2 -Wall -fPIC LDFLAGS = -lm -lrt -shared -Wl INCLUDE = -I../../CmnInc DEST = /Develop/lib/ .cpp.o $(CXX) $(CXXFLAGS) $(INCLUDE) -c $(SRCS) $(TARGET) $(OBJS) $(CXX) $(LDFLAGS) -o $(TARGET) $(OBJS) cp $(TARGET) $(DEST) clean $(RM) $(TARGET) $(OBJS) ■上位階層のMakefile #!/bin/make MAKE = make --no-print-directory SUBDIR = $(shell find ./*/src/ -type d) all list= $(SUBDIR) ; for subdir in $$list; do \ $(MAKE) -C $$subdir; \ done clean list= $(SUBDIR) ; for subdir in $$list; do \ $(MAKE) clean -C $$subdir; \ done